package com.idanchuang.component.sequence.id.service;

import java.util.List;

/**
 *
 * 自增ID接口
 *
 * 使用方式
 * <pre>
 *     \@Autowired(required = false)
 *     private GeneralSeqIdService generalSeqIdService;
 *
 *     ...
 *     generalSeqIdService.nextId(appId, tableName);
 *     ...
 * </pre>
 * @author yjy
 * @date 2020/8/24 15:51
 **/
public interface GeneralSeqIdService {

    /**
     * 获取自增ID
     * @param appId 应用名称
     * @param tableName 表名
     * @return 最新id
     */
    long nextId(String appId, String tableName);

    /**
     * 批量获取自增ID
     * @param appId 应用名
     * @param tableName 表名
     * @param count 获取数量
     * @return id集合
     */
    List<Long> nextId(String appId, String tableName, int count);

    /**
     * 重置当前id
     * @param appId 应用名
     * @param tableName 表名
     * @param initId 重置值
     * @return 重置后的当前值
     */
    long resetId(String appId, String tableName, long initId);

    /**
     * 设置最小id, 当id小于一个值时重置值
     * @param appId appId
     * @param tableName 表名
     * @param minId 最小id
     */
    void setMinId(String appId, String tableName, long minId);

}
